// import store from '@/store/index'
// import { AESUtils, RSAUtils } from '@/utils/crypto'

export const AUTH_CONS = {
  CRYPTO_NAME: 'transfer_build',
  ACCESS_TOKEN: 'access_token',
  REFRESH_TOKEN: 'refresh_token',
  REQ_HEADER_KEY: 'Authorization',
}
export const RESULT_CODE_ENUMS = {
  'NOT_LOGIN_CODE': { code: 401, msg: "未登录，没有访问权限" },
  'EXPIRED_TOKEN_CODE': { code: 300, msg: 'token已过期' },
  'SIGNATURE_ERROR_CODE': { code: 303, msg: '签名异常' },
  'INVALID_LICENSE_CODE': { code: 503, msg: '非法的License信息' },
  'ACCOUNT_OFFLINE_CODE': { code: 305, msg: "账号已在其他地方登录，被强制退出" },
}

/** 用户token操作 */
const TokenUtils = {
  /** 获取认证信息 */
  getAuthorization() {
    return localStorage.getItem(AUTH_CONS.ACCESS_TOKEN)
  },
  /** 设置认证信息 */
  setAuthorization(value) {
    localStorage.setItem(AUTH_CONS.ACCESS_TOKEN, value)
  },
  /** 校验认证信息 */
  checkAuthorization() {
    const accessToken = TokenUtils.getAuthorization()
    return accessToken ? true : false
  },
  /** 移除认证信息 */
  removeAuthorization() {
    localStorage.removeItem(AUTH_CONS.ACCESS_TOKEN)
  },
}

// /** 获取密钥操作 */
// const CryptoUtils = {
//   /** 获取加密的key */
//   getCryptoSecretKey() {
//     return localStorage.getItem(AUTH_CONS.CRYPTO_NAME)
//   },
//   /**
//    * 设置加密的key
//    *
//    * @returns {Object}
//    * {
//    *  aesKey: 生成的aesKey
//    *  rasKey: 通过rsa加密的aesKey
//    * }
//    */
//   setCryptoSecretKey() {
//     const aesKey = AESUtils.generateKey()
//     localStorage.setItem(AUTH_CONS.CRYPTO_NAME, aesKey)
//     const rasKey = RSAUtils.encrypt(aesKey)
//     return {
//       aesKey, rasKey
//     }
//   },
//   /**
//    * 移除缓存的加密密钥
//    */
//   removeCryptoSecretKey() {
//     localStorage.removeItem(AUTH_CONS.CRYPTO_NAME)
//   }
// }

/** 请求响应操作 */
const ResponseUtils = {
  /**
   * 检查是否登录
   *
   * @param {String|Number} code 响应返回code
   * @returns {Boolean} true-已登录 false-未登录
   * @author LiSong
   * @date 2022-10-20 9:30
   */
  checkIsLogin(code) {
    let flag = true
    switch(code) {
      // 401: 未登录，没有访问权限
      case RESULT_CODE_ENUMS.NOT_LOGIN_CODE.code:
        flag = false
        break
      // 300: token已过期
      case RESULT_CODE_ENUMS.EXPIRED_TOKEN_CODE.code:
        flag = false
        break
      // 303: 签名异常
      case RESULT_CODE_ENUMS.SIGNATURE_ERROR_CODE.code:
        flag = false
        break
      default:
        flag = true
        break
    }
    return flag
  },
  /** 校验请求结果是否加密 */
  // checkIsEncrypted(value) {
  //   // vuex中配置的是否开启加密
  //   const transferSecretOpen = store.getters.transferSecretOpen
  //   if (transferSecretOpen && value && (typeof value === 'string' || value instanceof String) && value.includes('ENC ')) {
  //     return true
  //   } else {
  //     return false
  //   }
  // },
  /**
   * 检查用户是否离线（其他地方登录，强制离线）
   *
   * @param {String|Number} code 响应返回code
   * @returns {Boolean} true-已离线 false-未离线
   * @author LiSong
   * @date 2022-10-20 9:30
   */
  checkAccountIsOffline(code) {
    return RESULT_CODE_ENUMS.ACCOUNT_OFFLINE_CODE.code == code
  },
  /** 获取请求响应的解密数据 */
  // getResponseDecryptData(value) {
  //   const secretText = value.split(' ')[1]
  //   if (secretText) {
  //     return AESUtils.decrypt(secretText, CryptoUtils.getCryptoSecretKey())
  //   } else {
  //     return ''
  //   }
  // }
}

export  {
  TokenUtils,
  // CryptoUtils,
  ResponseUtils,
}
